/*
 * Copyright (c) 2024. hallele, Inc All rights reserved.
 */

package cn.hallele.ms.filecenter.domain.action.file;

import cn.hallele.ms.filecenter.domain.das.FileDEDas;
import cn.hallele.ms.filecenter.domain.das.FileDTDas;
import cn.hallele.ms.filecenter.domain.domain.FileDomain;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * hallele_ms_filecenter
 *
 * @author anle5
 * @since 2024/9/24 0:49
 */
@Slf4j
@Service
public class FileDomainService {
    @Autowired
    private FileDTDas fileDTDas;

    @Autowired
    private FileDEDas fileDEDas;

    /**
     * 文件上传接口
     *
     * @param fileDomain 文件邻域对象
     * @return 文件邻域对象
     */
    public FileDomain uploadFile(FileDomain fileDomain) {
        FileDomain result = checkExist(fileDomain.getMd5());
        if (result != null) {
            return result;
        }

        FileDomain file = fileDTDas.uploadFile(fileDomain);
        fileDEDas.saveOne(file);
        return file;
    }


    /**
     * 查看文件是否存在
     *
     * @param md5 md5
     * @return 文件信息，不存在返回null
     */
    public FileDomain checkExist(String md5) {
        return fileDEDas.findByMd5(md5);
    }

    /**
     * 获取文件url地址
     *
     * @param id 文件id
     * @return 文件领域对象
     */
    public FileDomain findById(Long id) {
        FileDomain file = fileDEDas.findById(id);
        String url = fileDTDas.getUrl(file);
        file.setUrl(url);
        return file;
    }

    /**
     * 获取文件的url路径，供前端下载/展示，但是有过期时间
     *
     * @param id id
     * @return url
     */
    public FileDomain getUrlWithExpires(Long id, int expires) {
        FileDomain file = fileDEDas.findById(id);
        file.setExpires(expires);
        String url = fileDTDas.getUrlWithExpires(file);
        file.setUrl(url);
        return file;
    }
}
